//
//  NSObject+MFAPMSwizzle.h
//  MFAPMManager
//
//  Created by zhang liyu on 2019/5/22.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

/**
 方法交换
 */
@interface NSObject (MFAPMSwizzle)

/**
 swizzle 类方法
 
 @param originSEL 原有的方法
 @param swizzleSEL swizzle的方法
 */
+ (void)mfapm_swizzleClassSEL:(SEL)originSEL toSEL:(SEL)swizzleSEL;

/**
 swizzle 实例方法
 
 @param originSEL 原有的方法
 @param swizzleSEL swizzle的方法
 */
+ (void)mfapm_swizzleInstanceSEL:(SEL)originSEL toSEL:(SEL)swizzleSEL;

/**
 swizzle 两个类的方法
 
 @param sel 两个类共有的方法
 @param originalCls 源方法类
 @param stubCls     目的方法类
 
 @return 是否交换成功
 */
+ (BOOL)mfapm_swizzleSEL:(SEL)sel fromClass:(Class)originalCls toClass:(Class)stubCls;

@end

NS_ASSUME_NONNULL_END
